The following description applies only to the deprecated OMR Processing mechanism. Deprecated OMR processing mechanism is used when OMRProcessor.RecognitionEngine = Dual Threshold Legacy.
Unmarked Bubble Threshold
- The UnmarkedBubbleThreshold is only used when there is more than one bubble in a segment. It has no meaning and is not used if there is only one bubble in the position.
- The UnmarkedBubbleThreshold provides a mechanism to facilitate accurate recognition when there’s more than one bubble in a position. Whether to allow only a single bubble or more bubbles to be marked is indicated by the MarkScheme. If it’s SingleMark, then the UnmarkedBubbleThreshold indicates how much one marked bubble needs to stand out from the others. If it’s MultiMark, then the threshold indicates how much the marked bubbles need to stand out from the unmarked ones. To provide this functionality, the UnmarkedBubbleThreshold specifies the minimum pixel density difference between any pair of bubbles that must occur in order for the position to be considered a marked position. In other words, a position for which the marked pixel density difference between all pairs of bubbles does not exceed the percentage specified by the UnmarkedBubbleThreshold will be considered an unmarked position and will return in the results for that position the character specified by UnmarkedSegmentResult (except for the special case described next).
- There is a special case where a position having all bubble density differences less than the percentage specified by the UnmarkedBubbleThreshold will not be considered an unmarked position. That happens when the MarkScheme is set to MultiMark and all of the bubbles are marked more densely than the MarkedBubbleThreshold. In such a case, the Bubble Values for all of the bubbles are returned as the result. If any one or more of the bubbles is less densely marked than the MarkedBubbleThreshold, then the position will be considered an unmarked position and the character specified by UnmarkedSegmentResult will be returned.
- When there is more than one bubble in the position and the bubbles’ marked pixel densities all differ from one another by more than the UnmarkedBubbleThreshold, then the value of MarkScheme (single or multi mark) determines how the OMR engine will find and report marked bubbles.
- If it is SingleMark and there is one bubble marked more densely than the others, then the Bubble Value for that bubble is returned as the result.
- For the special case where it is SingleMark, and there are two or more bubbles with the same marked pixel density, and that density is greater than the densities of the other bubbles, then the character specified by TooManyMarksSegmentResult property will be returned.
- If it is MultiMark and there are one or more bubbles with pixel densities that exceed the MarkedBubbleThreshold, then the Bubble Values for all of those bubbles that exceed the MarkedBubbleThreshold are returned as the result.
- If it is MultiMark and there are no bubbles with pixel densities that exceed the MarkedBubbleThreshold, then the Bubble Value for the bubble with the greatest marked pixel count is returned as the result.
- For the special case where it is MultiMark, and there are two or more bubbles with the same marked pixel density, and that density is greater than the densities of the other bubbles, then the Bubble Values for all of those equally marked bubbles are returned as the result.
- UnmarkedBubbleThreshold adjustments will at times be required, typically to adjust for unmarked positions being incorrectly identified as marked.
- The lower the UnmarkedBubbleThreshold value, the better the recognition engine will be able to identify marginally marked bubbles. However, raising this value enhances the recognition engine's ability to correctly identify unmarked positions. If unmarked positions in an OMR field are being incorrectly identified as marked, raise the UnmarkedBubbleThreshold value a percent or two at a time until testing reflects accurate results. In summary, the UnmarkedBubbleThreshold should be set to as low as possible a value that will still allow the correct identification of unmarked positions.
- The value of MarkScheme (single or multi mark) determines the typical values of UnmarkedBubbleThreshold.
-
SingleMark — If set to this value, 9 is the general value to use with UnmarkedBubbleThreshold. The value may need to be adjusted based on your test results.
-
MultiMark — If set to this value, 15 is the value to use for initial testing. The value may need to be adjusted based on your test results.
Marked Bubble Threshold
- When there is only one bubble in the position, the MarkedBubbleThreshold specifies a pixel density percentage that must be exceeded in order for the position to be considered to contain a marked bubble and receive a 100% confidence rating. If the bubble’s pixel density is below the MarkedBubbleThreshold, then the position will be considered an unmarked position and the character specified by UnmarkedSegmentResult will be returned. As the percentage falls further below the MarkedBubbleThreshold, the likelihood that this is an unmarked segment increases and so does the returned confidence rating.
- If a field comprises a single bubble, the calculation of the bubble’s marked pixel density is best performed by instructing the OMR processor to use the dimensions of the field as provided to it. Do this by setting the SingleBubbleAreaAdjustmentMethod to UseAreaWithoutAdjustment, and set the MarkedBubbleThreshold to the desired marked pixel density as a percentage of the area computed from the field’s dimensions according to the BubbleShape. If the field contains more than one bubble or more than one segment, then the SingleBubbleAreaAdjustmentMethod does not apply and is ignored.
- When there is more than one bubble in the position, the value of MarkScheme (single or multi mark) determines how the OMR engine will find and report marked bubbles (as described above) and the MarkedBubbleThreshold specifies a pixel density percentage that is used to determine the accuracy confidence value of (any) marked bubbles in a position. Basically, a marked bubble whose density exceeds the MarkedBubbleThreshold value has the potential to receive a 100% confidence rating depending on the density proximity of the other bubbles in the position. Put another way, marked bubbles having a pixel density of less than the MarkedBubbleThreshold will always have a confidence value of less than 100%.
- OMR confidence is calculated per OMR field and represents the averaged confidence value of all positions in the field. The confidence value per position is calculated by comparing the most densely marked bubble’s pixel density against the MarkedBubbleThreshold value and against the marked density of the other bubbles in the position. The higher the ratio in these comparisons, the higher the confidence.
Analysis Comparison Method
- If the OMR AnalysisComparisonMethod is set to CompareClipToFormModel or CompareFullImageToFormModel (deprecated), the OMR analysis is done by considering only the markings added to the filled-in form and excluding what’s on the form itself. This is accomplished by instructing the OMR processor to drop out the pixels within the field that exist in the form model. In this way, only pixels corresponding to marks which were added to the form by the respondent are counted. Pixels that belong to the bubble or any other markings that originated on the template form are excluded. Set the UnmarkedBubbleThreshold and MarkedBubbleThreshold at levels appropriate for comparison against the expected mark fillings or checks. The CompareClipToFormModel method is more efficient and is the preferred one to use.
- The deprecated AnalysisComparisonMethod value of CompareFullImageToFormModel works similarly, but its use is discouraged.
- If the OMR AnalysisComparisonMethod is set to None, then the marked pixel counts will include the pixels that belong to the bubbles and the content within or next to the bubbles that originated on the template form. The UnmarkedBubbleThreshold property and MarkedBubbleThreshold property values needs to be set appropriately to account for those additional pixels that will be part of the marked pixel counts.